#!/usr/bin/env python3
"""
检查数据库中的用户
"""

import os
import sys
import django

# 添加backend目录到Python路径
backend_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'backend')
sys.path.insert(0, backend_path)

# 设置Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'HopeEngine.settings')
django.setup()

from accounts.models import User

def check_users():
    """检查数据库中的用户"""
    print("=== 检查数据库中的用户 ===")
    
    try:
        # 获取所有用户
        users = User.objects.all()
        print(f"数据库中共有 {users.count()} 个用户")
        
        if users.count() == 0:
            print("❌ 数据库中没有用户")
            return False
        
        # 显示用户信息
        for user in users:
            print(f"\n用户ID: {user.id}")
            print(f"用户名: {user.username}")
            print(f"邮箱: {user.email}")
            print(f"手机号: {user.phone}")
            print(f"状态: {user.status}")
            print(f"是否激活: {user.is_active}")
            print(f"是否员工: {user.is_staff}")
            print(f"是否超级用户: {user.is_superuser}")
            print(f"创建时间: {user.created_at}")
            print("-" * 50)
        
        return True
        
    except Exception as e:
        print(f"❌ 检查用户失败: {e}")
        return False

def create_test_user():
    """创建测试用户"""
    print("\n=== 创建测试用户 ===")
    
    try:
        # 检查是否已存在
        if User.objects.filter(username='test').exists():
            print("测试用户已存在，删除后重新创建")
            User.objects.filter(username='test').delete()
        
        # 创建测试用户
        user = User.objects.create_user(
            username='test',
            password='test',  # 设置密码
            phone='19939035516',
            email='test@example.com',
            status=1  # 确保状态为正常
        )
        
        print(f"✅ 测试用户创建成功: {user.username}")
        print(f"用户ID: {user.id}")
        print(f"状态: {user.status}")
        print(f"密码已设置")
        
        return True
        
    except Exception as e:
        print(f"❌ 创建测试用户失败: {e}")
        return False

def test_authenticate():
    """测试Django认证"""
    print("\n=== 测试Django认证 ===")
    
    try:
        from django.contrib.auth import authenticate
        
        # 测试认证
        user = authenticate(username='test', password='test')
        
        if user is not None:
            print(f"✅ 认证成功: {user.username}")
            print(f"用户状态: {user.status}")
            print(f"是否激活: {user.is_active}")
            return True
        else:
            print("❌ 认证失败")
            return False
            
    except Exception as e:
        print(f"❌ 认证测试失败: {e}")
        return False

def main():
    """主函数"""
    print("开始检查用户...\n")
    
    # 检查现有用户
    has_users = check_users()
    
    # 如果没有用户，创建测试用户
    if not has_users:
        create_test_user()
    
    # 再次检查用户
    check_users()
    
    # 测试认证
    test_authenticate()
    
    print("\n=== 检查完成 ===")

if __name__ == "__main__":
    main() 